package wdk

import (
	"sync"
)

// MerchantUserInfo 结构体
type MerchantUserInfo struct {
	// 真实手机号
	RealPhone string `json:"real_phone,omitempty" xml:"real_phone,omitempty"`
	// 生日
	Birthday string `json:"birthday,omitempty" xml:"birthday,omitempty"`
	// 地址
	Address string `json:"address,omitempty" xml:"address,omitempty"`
	// 性别
	Gender string `json:"gender,omitempty" xml:"gender,omitempty"`
	// 注册时间
	RegisterTime string `json:"register_time,omitempty" xml:"register_time,omitempty"`
	// 等级
	MemberLevel string `json:"member_level,omitempty" xml:"member_level,omitempty"`
	// 入会来源
	Source string `json:"source,omitempty" xml:"source,omitempty"`
	// 用户名
	UserName string `json:"user_name,omitempty" xml:"user_name,omitempty"`
	// 卡号
	CardNo string `json:"card_no,omitempty" xml:"card_no,omitempty"`
	// 积分余额，可以为小数
	ScoreBalance string `json:"score_balance,omitempty" xml:"score_balance,omitempty"`
	// 自定义渠道类型
	CustomizeChannel string `json:"customize_channel,omitempty" xml:"customize_channel,omitempty"`
	// 商家侧统一用户标识ID,如统一会员id
	UnionUid string `json:"union_uid,omitempty" xml:"union_uid,omitempty"`
	// 渠道用户ID，如erp会员id，淘宝openid、饿了么uid、微信openId
	ChannelUserId string `json:"channel_user_id,omitempty" xml:"channel_user_id,omitempty"`
	// 扩项属性
	ExtendProperty string `json:"extend_property,omitempty" xml:"extend_property,omitempty"`
	// 会员开始时间
	StartTime string `json:"start_time,omitempty" xml:"start_time,omitempty"`
	// 会员结束时间
	EndTime string `json:"end_time,omitempty" xml:"end_time,omitempty"`
	// 引导来源标识，填写引导来源标识备注，如门店编码
	SourceTag string `json:"source_tag,omitempty" xml:"source_tag,omitempty"`
	// storeMember：门店会员，txd：淘鲜达，eleme：饿了么，weixin：微信小程序
	ChannelCode string `json:"channel_code,omitempty" xml:"channel_code,omitempty"`
	// isv系统中的完整的用户信息
	OriginWholeData string `json:"origin_whole_data,omitempty" xml:"origin_whole_data,omitempty"`
	// 微信名
	WxUserName string `json:"wx_user_name,omitempty" xml:"wx_user_name,omitempty"`
	// 微信unionId
	WxUnionId string `json:"wx_union_id,omitempty" xml:"wx_union_id,omitempty"`
	// 储值卡余额，需要统一单位为”分“，然后取整上传
	CardBalance int64 `json:"card_balance,omitempty" xml:"card_balance,omitempty"`
	// 是否续费
	Renew bool `json:"renew,omitempty" xml:"renew,omitempty"`
	// 是否付费
	PayMember bool `json:"pay_member,omitempty" xml:"pay_member,omitempty"`
}

var poolMerchantUserInfo = sync.Pool{
	New: func() any {
		return new(MerchantUserInfo)
	},
}

// GetMerchantUserInfo() 从对象池中获取MerchantUserInfo
func GetMerchantUserInfo() *MerchantUserInfo {
	return poolMerchantUserInfo.Get().(*MerchantUserInfo)
}

// ReleaseMerchantUserInfo 释放MerchantUserInfo
func ReleaseMerchantUserInfo(v *MerchantUserInfo) {
	v.RealPhone = ""
	v.Birthday = ""
	v.Address = ""
	v.Gender = ""
	v.RegisterTime = ""
	v.MemberLevel = ""
	v.Source = ""
	v.UserName = ""
	v.CardNo = ""
	v.ScoreBalance = ""
	v.CustomizeChannel = ""
	v.UnionUid = ""
	v.ChannelUserId = ""
	v.ExtendProperty = ""
	v.StartTime = ""
	v.EndTime = ""
	v.SourceTag = ""
	v.ChannelCode = ""
	v.OriginWholeData = ""
	v.WxUserName = ""
	v.WxUnionId = ""
	v.CardBalance = 0
	v.Renew = false
	v.PayMember = false
	poolMerchantUserInfo.Put(v)
}
